#ifndef     __OTA_INFO_H
#define     __OTA_INFO_H

#include "./store.h"

namespace utils {

struct Info {

    uint32_t pkg_size;
    uint32_t ota_addr;
    uint32_t app_addr;

    void init(uint32_t size) {
        using namespace driver;

        pkg_size = size;
        ota_addr = flash::OTA_DATA_ADDR;
        app_addr = flash::APP_ADDR;
    }

    void reset() {
        pkg_size = 0;
        ota_addr = 0;
        app_addr = 0;
    }

    bool is_valid() const {
        using namespace driver;
        return (app_addr == flash::APP_ADDR) && 
                (ota_addr == flash::OTA_DATA_ADDR) &&
                (pkg_size > 0) &&
                (pkg_size < flash::APP_SIZE);
    }
};

inline utils::Store<Info, driver::flash::OTA_INFO_ADDR> ota_info;

}


#endif
